﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//#pragma pack(1)//设置默认对⻬数为1
//struct S
//{
//	char c1;
//	int i;
//	char c2;
//};
//#pragma pack()//取消设置的对⻬数，还原为默认
//int main()
//{
	//输出的结果是什么？
//	printf("%d\n", sizeof(struct S));
//	return 0;
//}

//结构体的声明
//描述一个老师
//struct studeng
//{
//	char name[20];//名字
//	int age;//年龄
//	char sex[5];//性别
//};//分号要记得加上
//
//#include <stdio.h>
//int main()
//{
//
//	return 0;
//}


//struct Point
//{
//	int x;
//	int y;
//}p1;//声明类型的同时定义变量p1
//
//int main()
//{
//	struct Point p2 = { 40 , 80 };//初始化
//	struct Point p3 = { .x = 80,.y = 40 };//顺序结构
//	return 0;
//}
//#include <stdio.h>
//struct Point
//{
//	int x;
//	int y;
//};
//int main()
//{
//	struct Point p = {40,80};
//	printf("x: %d y: %d\n", p.x, p.y);
//	return 0;
//}

//#include <stdio.h>
//struct Point
//{
//	int x;
//	int y;
//};
//int main()
//{
//	struct Point p = { 6,9 };
//
//	printf("x: %d y: %d\n", p.x, p.y);
//	return 0;
//}


#include <stdio.h>
//struct Point
//{
//	int x;
//	int y;
//	char a[10];
//};
//int main()
//{
//	struct Point p1 = { 6,9,"hello"};
//	struct Point *p2 = &p1;
//
//	printf("x: %d y: %d a : %s\n", p2->x, p2->y,p2->a);
//	return 0;
//}
//struct Point
//{
//	int x;
//	int y;
//	char a[10];
//}p1;//声明类型的同时定义变量p1
//
//struct Point p2; //定义结构体变量p2
//
//
//int main()
//{
//	struct Point p3 = { 40 , 80 ,"hello" };//结构体成员的顺序初始化
//	struct Point p4 = { .x = 80, .y = 40 , .a = "hello" };//指定的顺序初始化
//	return 0;
//}
//


//struct Point
//{
//	
//	char a[10];
//	int x;
//};
//void p(struct Point s)
//{
//	printf("%s %d\n", s.a, s.x);
//}
//void p1(struct Point* s)
//{
//	printf("%s %d\n", s->a, s->x);
//}
//int main()
//{
//	struct Point s = { "李四",18 };
//	p(s);
//	p1(&s);
//	
//	
//	return 0;
//}

//struct
//{
//	int a;
//	int b;
//	double c;
//}x = {20,80,3.14};
//int main()
//{
//	printf("%d %d %lf", x.a, x.b, x.c);
//	return 0;
//}
//struct Node
//{
//	int date;
//	struct Node next;
//
//};
//struct Node
//{
//	int date;
//	struct Node *next;
//};
//int main()
//{
//	return 0;
//}




//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};

//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//int main()
//{
//	printf("%zd\n", sizeof(struct S3));
//}

//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//int main()
//{
//	printf("%zd\n", sizeof(struct S2));
//}

//
//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//struct S4
//{
//	char c1;
//	struct S3 s3;
//	double d;
//};
//int main()
//{
//	printf("%zd\n", sizeof(struct S4));
//}



//#include <stdio.h>
//#pragma pack(1)//设置默认对⻬数为1
//struct S
//{
//	char a;
//	int b;
//	char c;
//};
//#pragma pack()//取消设置的对⻬数，还原为默认
//int main()
//{
//	//输出的结果是什么？
//	printf("%d\n", sizeof(struct S));
//	return 0;
//}

//struct S
//{
//	int data[1000];
//	int num;
//};
//struct S s = { {1,2,3,4}, 1000 };//初始化
////结构体传参
//void p1(struct S s)
//{
//	printf("%d\n", s.num);
//}
////结构体地址传参
//void p2(struct S* ps)
//{
//	printf("%d\n", ps->num);
//}
//int main()
//{
//	p1(s);
//	p2(&s);
//
//}




//struct S
//{
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//};
//int main()
//{
//	struct S s = { 0 };
//	s.a = 10;
//	s.b = 12;
//	s.c = 3;
//	s.d = 4;
//	printf("%zd\n", sizeof(s));
//	return 0;
//}

//int Fun()
//{
//	union
//	{
//		int i;
//		char c;
//	}un;
//	un.i = 1;
//	return un.i;
//}
//int main()
//{
//	int ret = Fun();
//	if (ret == 1)
//	{
//		printf("小端");
//	}
//	else
//	{
//		printf("大端");
//	}
//	return 0;
//}
